package com.ciwong.epaper.util;

import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.util.Log;

/**
 * Copyright © 深圳市倍轻松科技股份有限公司
 *
 * @Filname : LauncherSwitcher.java
 * @Author : Penghao
 * @Create : 2025/9/10 14:00
 * @Description :
 * @Version : v1.0
 **/

public class LauncherSwitcher {

    private static final String TAG = "LauncherSwitcher";

    /**
     * 动态切换应用的 Launcher Activity
     *
     * @param context       上下文
     * @param enableActivity 需要启用的 Activity（全类名，如 com.example.MainActivityA）
     * @param disableActivity 需要禁用的 Activity（全类名，如 com.example.MainActivityB）
     */
    public static void switchLauncher(Context context, String enableActivity, String disableActivity) {
        PackageManager pm = context.getPackageManager();

        ComponentName enable = new ComponentName(context, enableActivity);
        ComponentName disable = new ComponentName(context, disableActivity);

        try {
            // 启用目标入口
            pm.setComponentEnabledSetting(enable,
                    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                    PackageManager.DONT_KILL_APP);

            // 禁用原入口
            pm.setComponentEnabledSetting(disable,
                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                    PackageManager.DONT_KILL_APP);

            Log.i(TAG, "切换入口成功: " + enableActivity);
        } catch (Exception e) {
            Log.e(TAG, "切换入口失败", e);
        }
    }

    /**
     * 只启用某个 Launcher Activity，禁用其余入口
     *
     * @param context       上下文
     * @param targetActivity 需要启用的 Activity（全类名）
     */
    public static void enableOnly(Context context, String targetActivity) {
        PackageManager pm = context.getPackageManager();
        try {
            // 遍历当前应用所有 Activity
            for (android.content.pm.ActivityInfo activityInfo :
                    context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_ACTIVITIES).activities) {

                ComponentName cn = new ComponentName(context, activityInfo.name);
                if (activityInfo.name.equals(targetActivity)) {
                    pm.setComponentEnabledSetting(cn,
                            PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                            PackageManager.DONT_KILL_APP);
                    Log.i(TAG, "启用入口: " + targetActivity);
                } else {
                    pm.setComponentEnabledSetting(cn,
                            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                            PackageManager.DONT_KILL_APP);
                }
            }
        } catch (Exception e) {
            Log.e(TAG, "启用入口失败", e);
        }
    }
}
